﻿///////////////////////////////////////////////////////////////////////////
//  Copyright(c) 2023, GNU LESSER GENERAL PUBLIC LICENSE Version 3, 29 June 2007
//
/// @file    klbge2d.h
/// @brief   文件简要描述
/// @version 0.1
/// @history 修改历史
/// @warning 没有警告
///////////////////////////////////////////////////////////////////////////
#ifndef __KLBGE2D_H__
#define __KLBGE2D_H__


#include "klb_type.h"
#include "render/sdl_window.h"
#include "core/world.h"
#include "render/wsdl_images.h"


#if defined(__cplusplus)
extern "C" {
#endif


typedef struct klbge2d_t_
{
    world_t*        p_world;        ///< game世界

    sdl_window_t*   p_wnd;          ///< 窗口
    wsdl_images_t*  p_images;

    int64_t         last_tc;
}klbge2d_t;


/// @brief 创建一个ge2d对象
/// @return klbge2d_t* ge2d对象
klbge2d_t* klbge2d_create();


/// @brief 销毁ge2d对象
/// @param [in] *p_ge2d          ge2d对象
/// @return 无
void klbge2d_destroy(klbge2d_t* p_ge2d);

int klbge2d_init(klbge2d_t* p_ge2d, int w, int h, const char* p_title);
void klbge2d_quit(klbge2d_t* p_ge2d);

world_t* klbge2d_get_world(klbge2d_t* p_ge2d);


int klbge2d_loop_once(klbge2d_t* p_ge2d, int64_t last_tc, int64_t now);


#ifdef __cplusplus
}
#endif

#endif // __KLBGE2D_H__
//end
